package com.dyb.demo.return_finally;

/**
 * 测试return和finally的执行顺序
 */
public class ReturnAndFinally {

    public static void main(String[] args) {
        System.out.println("return: " + test());
    }

    /**
     * debug可知finally在return中间执行
     * return 先将返回结果放回函数栈中，然后执行 finally 块代码，最后正式返回结果，结束运行
     * finally 块中代码并没有更新函数栈中的返回值，所以返回值为1
     * @return
     */
    private static int test() {
        int a = 1;
        try {
            return a;
        } finally {
            ++a;
            System.out.println("finally: " + a);
        }
    }
}
